# -*- coding: utf-8 -*-
import mod.client.extraClientApi as clientApi
from mod.client.ui.controls.baseUIControl import BaseUIControl
from mod.client.ui.controls.buttonUIControl import ButtonUIControl
from mod.client.ui.controls.imageUIControl import ImageUIControl
from legendaryPowerClientScript.ui.base import buttonComponent
from legendaryPowerClientScript.ui.base.baseComponent import BaseComponent
from legendaryPowerClientScript.util import apiUtil
class ToggleComponent(BaseComponent):
    # type: (str, UIBase, ButtonUIControl) -> None
    """
    表示一个开关组件。注意，它对应的实际上是一个按钮控件！并非原生的开关控件。
    相比于原生的开关，此开关可以根据状态显示不同的图像，且其开关状态可以自动影响另一Label的颜色

    Args:
        path (str): 控件路径。
        ui (UIBase): 界面对象。
        component (ButtonUIControl): 按钮控件对象。

    Attributes:
        isOn (bool): 表示开关状态是否为开启。
        toggleCallback (callable): 切换回调函数。创建控件后，需要手动将设置此值为切换开关时触发的回调。
        isDark (bool): 是否为暗色模式，默认False。若手动将此值改为True，则可以适应白色底的UI背景

    使用例：

        def setLockPitch(self, lockPitch, sync=True):
        self.lockPitch = lockPitch
        self.resetCamera()

        toggle = self.getToggle("/cameraSetting/lockPitch/lock_toggle")
        toggle.setBoundText(self.getLabel("/cameraSetting/lockPitch"))
        toggle.toggleCallback = self.setLockPitch
    """
    self.isOn  = False
    self.toggleCallback  = None # callable
    self.isDark  = False

    def setBoundText(self, labelComponent):
        """
        设置绑定的文本标签组件。在开关切换时，对应的文本颜色也会变化
        Args:
            labelComponent (Union[str, LabelComponent]): 文本标签组件。
        """
        pass

    def setOn(self, isOn, callback=False):
        # type: (bool, bool) -> None
        """
        设置开关状态。
        Args:
            isOn (bool): 开关状态。
            callback (bool): 是否调用回调函数。
        """
        pass

